The present invention relates to platforms for the development and deployment of computer program applications.
An enterprise application is a software program used by business people to increase productivity through automated data processing. Enterprise applications put into action a set of business requirements, expressed using natural language and “business speak”. For the purposes of better defining the system, business requirements can be broken down into a set of interrelated business rules. A business rule, as defined by the GUIDE Business Rules Project, is a statement that defines or constrains some aspect of the business. A business rule is intended to assert business structure, or to control or influence the behavior of the business. A business rule should be atomic so that it cannot be broken down further without losing meaning.
Traditional implementations of business rules typically involve hard-coding them as procedural (flow-chartable) logic using programming languages such as Java, C++, and COBOL. Such business logic generally implements the business requirements of the enterprise application, providing the instructions necessary to store, retrieve, create, and manipulate data as well as validation constraints on such transactions. Implementing business logic using such languages requires highly trained software engineers and is relatively expensive and time-consuming. In addition, procedural programming languages do not support inferencing, which is a key feature of a robust rule-based system. They also make it prohibitively difficult to identify and resolve logic errors such as ambiguity and incompleteness among interrelated business rules.
An alternative approach to business rules automation is through expensive and difficult-to-use expert (rule-based) systems. This entails the conversion of the business rules into a formalized syntax that more closely represents the declarative nature of the business rules, generally requiring the services of highly trained knowledge engineers. The formalized rules are then processed through an inference engine, which itself requires tremendous programming effort to integrate with existing enterprise systems. Although some such rule-based systems provide the ability to easily modify the business rules, they fail to support certain business rule types such as constraints. And like procedural implementations, they provide no support for resolving logic errors.
Component technologies, in general, have interface and interoperability standards that facilitate rapid and straightforward integration of distributed computing applications. Components have delivered significant benefits for providing standardized low-level services, user interface controls and database access. Distributed component platforms enable the development of highly reusable server-side business components.
However, adapting component business logic requires manipulation of programmed code, which is difficult and, in any event, generally not allowed under the component license agreement. Although component behaviors may be influenced by parameterization, they are nevertheless limited to the problem domain contemplated by the component developer. On the other hand, declarative business rules not hard-coded into a component can be easily adapted to accommodate changing business requirements. A method for the automation of such rules is the inference engine. However, inference engines have been difficult to use within server-side component-based systems, with integration requiring coding to the proprietary API of the inference engine, and processing instructions represented in the proprietary syntax or programming language of each particular inference engine.